home *** CD-ROM | disk | FTP | other *** search
/ Aminet 52 / Aminet 52 (2002)(GTI - Schatztruhe)[!][Dec 2002].iso / Aminet / gfx / conv / wbmp.lha / WBMP2ILBM.rexx < prev   
OS/2 REXX Batch file  |  2002-09-03  |  2KB  |  66 lines

  1. /* Wireles Bitmap -> ILBM
  2. $VER: Version 1.0 (03.09.02) */
  3. IF ~SHOW('LIBRARIES','rexxsupport.library') THEN DO
  4.    IF ~ADDLIB('rexxsupport.library',10,-30,0) THEN DO
  5.       SAY 'Kann die <rexxsupport.library> nicht öffnen!'
  6.       EXIT(10)
  7.    END
  8. END
  9. Parse Arg OPTS
  10. Parse Value OPTS with WBMP ' ' ILBM
  11. IF Exists(WBMP)=0 Then Do
  12. say "WBMP-file not found!"
  13. Exit(0)
  14. End
  15. If ILBM="" | WBMP="" Then Do
  16. Say '1b5b33326d'x||"wbmp2ilbm"||'1b5b33316d'x||" ilbm-file outfile"
  17. Exit(0)
  18. End
  19. WBMPLaenge=SUBWORD(STATEF(WBMP),2,1)
  20. Call Open(WBMP,WBMP,R)
  21. Kennung=C2D(Readch(WBMP,2))
  22. If Kennung~=0 Then Do
  23. say "incorrect Headermarker $"||d2x(Kennung,4)
  24. Exit(0)
  25. End
  26. Width=C2D(Readch(WBMP,1))
  27. Height=C2D(Readch(WBMP,1))
  28. WbmpRowlen=Width%8
  29. If (Width//8)~=0 Then WbmpRowlen=WbmpRowlen+1
  30. WbmpBodylen=WbmpRowlen*Height
  31. If WbmpBodylen+4~=WbmpLaenge Then Do
  32. say "incorrect Size"
  33. Exit(0)
  34. End
  35. say "Input-file "|| WBMP ||" [WBMP] "||Width||"x"||Height||"x1"
  36. say "create interleaved bitmap "||ILBM
  37. IlbmRowlen=WbmpRowlen
  38. If (IlbmRowlen*8)//16~=0 Then IlbmRowlen=IlbmRowlen+1
  39. ILBMBodylen=IlbmRowlen*Height
  40. Call Headbuilding()
  41. CALL OPEN(ILBM,ILBM,WRITE)
  42. WR=Writech(ILBM,HEAD)
  43. C=CLOSE(ILBM)
  44. CALL OPEN(ILBM,ILBM,A)
  45. RowDummy=Insert(D2C(0),"",1,ILBMRowlen-1,D2C(0))
  46. Do D=1 To Height
  47. Row=Overlay(Readch(WBMP,WBMPRowlen),RowDummy,1,ILBMRowlen)
  48. Wr=Writech(ILBM,Row)
  49. End
  50. C=Close(WBMP)
  51. C=CLOSE(ILBM)
  52. say "done"
  53. Exit(0)
  54. /* ILBM-Kopf basteln */
  55. Headbuilding:
  56. SCRMODE=135168
  57. HEAD=FORM
  58. HEAD=HEAD||X2C(D2X(ILBMBodylen+78,8))
  59. HEAD=HEAD||ILBMBMHD||X2C(D2X(20,8))||X2C(D2X(Width,4))||X2C(D2X(Height,4))||X2C(D2X(0,8))
  60. HEAD=HEAD||X2C(D2X(1,2))||X2C(D2X(0,6))||X2C(D2X(0,8))||X2C(D2X(Width,4))||X2C(D2X(Height,4))
  61. HEAD=HEAD||CAMG||X2C(D2X(4,8))||X2C(D2X(SCRMODE,8))||CMAP||X2C(D2X(6,8))||X2C(D2X(0,6))||X2C(D2X(16777215,6))||GRAB||X2C(D2X(4,8))||X2C(D2X(3276850,8))
  62. HEAD=HEAD||"BODY"||X2C(D2X(ILBMBodylen,8))
  63. Return(0)
  64. /* Ende Kopf-Bastelei */
  65.  
  66.